package test;

import exthread.MyThread;

import exthread.MyThread;

/**
 * Thread 类中提供了两种方法
 * this.interrupted()：测试当前线程是否已经中断
 * this.isInterrupted()：测试线程是否已经中断
 *
 * 解释：this.interrupted()方法解释，测试当前线程是否已经中断，
 * 当前线程是指运行this.interrupted()方法的线程。
 */
public class Run {
	public static void main(String[] args) {
		try {
			MyThread thread = new MyThread();
			thread.start();
			Thread.sleep(1000);
			thread.interrupt();
			//Thread.currentThread().interrupt();
			System.out.println("是否停止1?="+thread.interrupted());
			System.out.println("是否停止2?="+thread.interrupted());
		} catch (InterruptedException e) {
			System.out.println("main catch");
			e.printStackTrace();
		}
		System.out.println("end!");
	}

	/**
	 * 1.未添加：Thread.currentThread().interrupt();
	 * 输出结果：
	 * 是否停止1?=false
	 * i=152503
	 * .....
	 * i=152528
	 * 是否停止2?=false
	 * 解释：测试当前线程是否已经中断。这个“当前线程”是main，
	 * 它从未中断过，所以打印的结果是两个false
	 *
	 * 2.添加：Thread.currentThread().interrupt();
	 * 是否停止1?=true
	 *	i=124243
	 *	i=124244
	 *	 ....
	 *	i=124824
	 *	i=124825
	 *	是否停止2?=false
	 *	解释：为什么第二个是false?
	 *	官方解释：测试当前线程是否已经中断。线程的中断状态由改方法清除。
	 *  换句话说，如果连续两次调用该方法，则第二次调用将返回false(在第一次调用已清除了其中断状态
	 *  之后，且第二次调用检验完中断状态前，当前线程再次中断的情况除外。)
	 *
	 */
}

